﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ModBot.ConfigBuilder.Providers;

namespace ModBot.ConfigBuilder
{
    public static class Defaults
    {     
        #region Settings Defaults
        public static Boolean Default_Settings_DoMelee = false;
        public static Boolean Default_Settings_DoHeals = false;
        public static Boolean Default_Settings_DoBuffs = false;
        public static Boolean Default_Settings_DoDebuffs = false;
        public static Boolean Default_Settings_DoEvents = false;
        public static Boolean Default_Settings_DoCures = false;
        public static Boolean Default_Settings_DoPull = false;
        public static Boolean Default_Settings_DoPet = false;
        public static Boolean Default_Settings_DoSit = false;
        public static Boolean Default_Settings_DoLoot = false;
        public static Boolean Default_Settings_DoFW = false;
        public static Boolean Default_Settings_DoForage = false;
        public static string Default_Settings_ForageIni = "forage.ini";
        public static Boolean Default_Settings_DoAfk = false;
        public static Boolean Default_Settings_DoMount = false;
        public static string Default_Settings_MountCast = string.Empty;
        public static string Default_Settings_MasterList = string.Empty;
        public static string Default_Settings_TankName = string.Empty;
        public static int Default_Settings_Radius = 50;
        public static int Default_Settings_SitAggroRadiusCheck = 75;
        public static string Default_Settings_AfkMessage = "Busy at the moment";
        public static Boolean Default_Settings_DeathSlot = false;
        public static string Default_Settings_NetworkIni = string.Empty;
        public static string Default_Settings_TraderName = string.Empty;
        public static int Default_Settings_FollowDistance = 20;
        public static string Default_Settings_FollowStick = "20 hold uw";
        public static string Default_Settings_PetCast = string.Empty;
        public static Boolean Default_Settings_PetAggro = false;
        public static string Default_Settings_PetFoci = string.Empty;
        public static string Default_Settings_PetShrinkSpell = string.Empty;
        public static Boolean Default_Settings_PetShrink = false;
        public static Boolean Default_Settings_PetAssist = false;
        #endregion        

        #region Melee Defaults
        public static Boolean Default_Melee_Offtank = false;
        public static int Default_Melee_ACLeash = 50;
        public static int Default_Melee_ACAssistPct = 99;
        public static int Default_Melee_ACManaPct = 101;
        public static string Default_Melee_ACAnnounce = @"/bc";
        public static string Default_Melee_ACMeleeCmd = @"/melee plugin=1";
        public static string Default_Melee_ACBefore = string.Empty;
        public static string Default_Melee_ACAfter = string.Empty;
        #endregion

        #region Heal Settings Defaults
        public static Int32 Default_HealSettings_AHCount = 0;
        public static Int32 Default_HealSettings_AHCheckTime = 0;
        public static Boolean Default_HealSettings_AHHealOOBC = false;
        public static string  Default_HealSettings_AHHealMode = "0|0|1";
        public static Int32 Default_HealSettings_AHInteruptLevel = 2;
        public static string Default_HealSettings_AHClassPriority = "enc,wiz,mag,nec,clr,dru,shm,pal,shd,war,bst,rng,ber,rog,brd,mnk";
        public static Boolean Default_HealSettings_AHAllowDismount = false;
        #endregion

        #region Heal Instance Defaults
        public static string Default_HealInstance_AHGem = string.Empty;
        public static string Default_HealInstance_AHSpell = string.Empty;
        public static string Default_HealInstance_AHSpellFoci = string.Empty;
        public static Int32 Default_HealInstance_AHDurMod=0;
        public static Int32 Default_HealInstance_AHSpellMinMana = 0;
        public static string Default_HealInstance_AHSpellAlias = string.Empty;
        public static string Default_HealInstance_AHAnnouce = string.Empty;
        public static Int32 Default_HealInstance_AHTarCnt = 1;
        public static string Default_HealInstance_AHClass = string.Empty;
        public static Boolean Default_HealInstance_AHPreCondition = true;
        #endregion

        #region Buff Settings Defaults
        public static Int32 Default_BuffSettings_ABCount=0;
        public static Int32 Default_BuffSettings_ABCheckTime = 1;
        public static Int32 Default_BuffSettings_ABMobMax = 25;
        #endregion

        #region Buff Instance Defaults
        public static string Default_BuffInstance_ABGem = string.Empty;
        public static string Default_BuffInstance_ABSpell = string.Empty;
        public static string Default_BuffInstance_ABSpellFoci = string.Empty;
        public static Int32 Default_BuffInstance_ABDurMod = 0;
        public static Int32 Default_BuffInstance_ABSpellMinMana = 0;
        public static string Default_BuffInstance_ABSpellAlias = string.Empty;
        public static string Default_BuffInstance_ABAnnouce = string.Empty;
        public static Int32 Default_BuffInstance_ABTarCnt = 1;
        public static string Default_BuffInstance_ABTarType = string.Empty;        
        public static Boolean Default_BuffInstance_ABRecast = false;
        public static string Default_BuffInstance_ABSpellIcon = string.Empty;
        /// <summary>
        /// This setting is redundant in current release and will be removed soon. 
        /// Leave set as default for best results.
        /// </summary>
        public static Boolean Default_BuffInstance_ABProactive = true;

        #endregion

        #region Debuff Settings Defaults
        public static Int32 Default_DebuffSettings_ADCount = 0;
        public static Int32 Default_DebuffSettings_ADMobMax = 25;
        public static Int32 Default_DebuffSettings_ADCheckTime = 1;
        public static Boolean Default_DebuffSettings_ADAggroOnly = false;
        public static string Default_DebuffSettings_ADHold = "0|1|1";        
        #endregion

        #region Debuff Instance Defaults
        public static string Default_DebuffInstance_ADGem = string.Empty;
        public static string Default_DebuffInstance_ADSpell = string.Empty;
        public static string Default_DebuffInstance_ADSpellFoci = string.Empty;
        public static Int32 Default_DebuffInstance_ADDurMod = 0;
        public static string Default_DebuffInstance_ADSpellAlias = string.Empty;
        public static string Default_DebuffInstance_ADAnnouce = string.Empty;
        public static Int32 Default_DebuffInstance_ADSpellMinMana = 0;
        public static Int32 Default_DebuffInstance_ADSpellRecast = 0;
        public static string Default_DebuffInstance_ADSpellCastonResist = string.Empty;
        public static Int32 Default_DebuffInstance_ADSpellDelay = 0;
        public static Int32 Default_DebuffInstance_ADTarCnt = 1;
        public static DebuffTargetType Default_DebuffInstance_ADTarType = DebuffTargetType.AllButMATargetBeforeNextSpell; 
        public static Int32 Default_DebuffInstance_ADTarBegHP = 100;
        public static Int32 Default_DebuffInstance_ADTarEndHP = 0;
        public static string Default_DebuffInstance_ADIfSpellImmune = string.Empty;
        public static Int32 Default_DebuffInstance_ADUseHOTT = 0;
        public static Boolean Default_DebuffInstance_ADPreCondition = true;
        #endregion

        #region Event Settings Defaults
        public static Int32 Default_EventSettings_AECount = 0;
        public static Int32 Default_EventSettings_AECheckTime = 1;
        public static string Default_EventSettings_AECustom1 = string.Empty;
        public static string Default_EventSettings_AECustom2 = string.Empty;
        public static string Default_EventSettings_AECustom3 = string.Empty;
        #endregion

        #region Event Instance Defaults
        public static string Default_EventInstance_AEGem = string.Empty;
        public static string Default_EventInstance_AESpell = string.Empty;
        public static string Default_EventInstance_AESpellFoci = string.Empty;
        public static Int32 Default_EventInstance_AEDurMod = 0;
        public static Int32 Default_EventInstance_AEDelay = 0;
        public static Int32 Default_EventInstance_AEEventMinMana = 0;
        public static Int32 Default_EventInstance_AEEventMinHP= 0;
        public static Int32 Default_EventInstance_AEMinMana = 0;
        public static Int32 Default_EventInstance_AEMaxMana = 100;
        public static Int32 Default_EventInstance_AEMinHP = 0;
        public static Int32 Default_EventInstance_AEMaxHP = 100;
        public static string Default_EventInstance_AETarType = string.Empty;
        public static string Default_EventInstance_AESpellAlias = string.Empty;
        public static string Default_EventInstance_AEAnnounce = string.Empty;
        public static Boolean Default_EventInstance_AETarCnt = true;
        #endregion

        #region Pull Settings Defaults
        public static Int32 Default_PullSettings_APCheckTime = 15;
        public static Int32 Default_PullSettings_APRadius = 150;
        public static Int32 Default_PullSettings_APMobMax = 4;
        public static string Default_PullSettings_APScript = string.Empty;
        public static string Default_PullSettings_APPath = string.Empty;
        public static string Default_PullSettings_APBefore = string.Empty;
        public static string Default_PullSettings_APAfter = string.Empty;
        public static string Default_PullSettings_APAnnounce = string.Empty; 
        #endregion
    }

    public static class Keys
    {
        #region Settings Keys
        public static string Settings_Section_Key = "Settings";
        public static string Settings_Key_DoMelee = "DoMelee";
        public static string Settings_Key_DoHeals = "DoHeals";
        public static string Settings_Key_DoBuffs = "DoBuffs";
        public static string Settings_Key_DoDebuffs = "DoDebuffs";
        public static string Settings_Key_DoEvents = "DoEvents";
        public static string Settings_Key_DoCures = "DoCures";
        public static string Settings_Key_DoPull = "DoPull";
        public static string Settings_Key_DoPet = "DoPet";
        public static string Settings_Key_DoSit = "DoSit";
        public static string Settings_Key_DoLoot = "DoLoot";
        public static string Settings_Key_DoFW = "DoFW";
        public static string Settings_Key_DoForage = "DoForage";
        public static string Settings_Key_ForageIni = "ForageIni";
        public static string Settings_Key_DoAfk = "DoAfk";
        public static string Settings_Key_DoMount = "DoMount";
        public static string Settings_Key_MountCast = "MountCast";
        public static string Settings_Key_MasterList = "MasterList";
        public static string Settings_Key_TankName = "TankName";
        public static string Settings_Key_Radius = "Radius";
        public static string Settings_Key_SitAggroRadiusCheck = "SitAggroRadiusCheck";
        public static string Settings_Key_AfkMessage = "AfkMessage";
        public static string Settings_Key_DeathSlot = "DeathSlot";
        public static string Settings_Key_NetworkIni = "NetworkIni";
        public static string Settings_Key_TraderName = "TraderName";
        public static string Settings_Key_FollowDistance = "FollowDistance";
        public static string Settings_Key_FollowStick = "FollowStick";
        public static string Settings_Key_PetCast = "PetCast";
        public static string Settings_Key_PetAggro = "PetAggro";
        public static string Settings_Key_PetFoci = "PetFoci";
        public static string Settings_Key_PetShrinkSpell = "PetShrinkSpell";
        public static string Settings_Key_PetShrink = "PetShrink";
        public static string Settings_Key_PetAssist = "PetAssist";
        #endregion

        #region Melee Keys
        public static string Melee_Section_Key = "Melee";
        public static string Melee_Key_OffTank = "OffTank";
        public static string Melee_Key_ACLeash = "ACLeash";
        public static string Melee_Key_ACAssistPct = "ACAssistPct";
        public static string Melee_Key_ACManaPct = "ACManaPct";
        public static string Melee_Key_ACAnnounce = "ACAnnounce";
        public static string Melee_Key_ACMeleeCmd = "ACMeleeCmd";
        public static string Melee_Key_ACBefore = "ACBefore";
        public static string Melee_Key_ACAfter = "ACAfter";
        #endregion

        #region Heal Settings Keys
        public static string HealSettings_Section_Key = "AdvHeal";
        public static string HealSettings_Key_AHCount = "AHCount";
        public static string HealSettings_Key_AHCheckTime = "AHCheckTime";
        public static string HealSettings_Key_AHHealOOBC = "AHHealOOBC";
        public static string HealSettings_Key_AHHealMode = "AHHealMode";
        public static string HealSettings_Key_AHInteruptLevel = "AHInteruptLevel";
        public static string HealSettings_Key_AHClassPriority = "AHClassPriority";
        public static string HealSettings_Key_AHAllowDismount = "AHAllowDismount";
        #endregion

        #region Heal Instance Keys
        public static string HealInstance_Section_Key = "AdvHeal";
        public static string HealInstance_Key_AHGem = "AHGem";
        public static string HealInstance_Key_AHSpell = "AHSpell";
        public static string HealInstance_Key_AHSpellFoci = "AHSpellFoci";
        public static string HealInstance_Key_AHDurMod = "AHDurMod";
        public static string HealInstance_Key_AHSpellMinMana = "AHSpellMinMana";
        public static string HealInstance_Key_AHSpellAlias = "AHSpellAlias";
        public static string HealInstance_Key_AHAnnouce = "AHAnnouce";
        public static string HealInstance_Key_AHTarCnt = "AHTarCnt";
        public static string HealInstance_Key_AHClass = "AHClass";
        public static string HealInstance_Key_AHPreCondition = "AHPreCondition";
        #endregion

        #region Buff Settings Keys
        public static string BuffSettings_Section_Key = "AdvBuff";
        public static string BuffSettings_Key_ABCount = "ABCount";
        public static string BuffSettings_Key_ABCheckTime = "ABCheckTime";
        public static string BuffSettings_Key_ABMobMax = "ABMobMax";
        #endregion

        #region Buff Instance Keys
        public static string BuffInstance_Key_ABGem = "ABGem";
        public static string BuffInstance_Key_ABSpell = "ABSpell";
        public static string BuffInstance_Key_ABSpellFoci = "ABSpellFoci";
        public static string BuffInstance_Key_ABDurMod = "ABDurMod";
        public static string BuffInstance_Key_ABSpellMinMana = "ABSpellMinMana";
        public static string BuffInstance_Key_ABSpellAlias = "ABSpellAlias";
        public static string BuffInstance_Key_ABAnnouce = "ABAnnouce";
        public static string BuffInstance_Key_ABTarCnt = "ABTarCnt";
        public static string BuffInstance_Key_ABTarType = "ABTarType";
        public static string BuffInstance_Key_ABRecast = "ABRecast";
        public static string BuffInstance_Key_ABSpellIcon = "ABSpellIcon";
        public static string BuffInstance_Key_ABProactive = "ABProactive";        
        #endregion

        #region Debuff Settings Keys
        public static string DebuffSettings_Section_Key = "AdvDebuff";        
        public static string DebuffSettings_Key_ADCount = "ADCount";
        public static string DebuffSettings_Key_ADMobMax = "ADMobMax";
        public static string DebuffSettings_Key_ADCheckTime = "ADCheckTime";
        public static string DebuffSettings_Key_ADAggroOnly = "ADAggrOnly";
        public static string DebuffSettings_Key_ADHold = "ADHold ";        
        #endregion

        #region Debuff Instance Keys
        public static string DebuffInstance_Key_ADGem = "ADGem";
        public static string DebuffInstance_Key_ADSpell = "ADSpell";
        public static string DebuffInstance_Key_ADSpellFoci = "ADSpellFoci";
        public static string DebuffInstance_Key_ADDurMod = "ADDurMod";
        public static string DebuffInstance_Key_ADSpellAlias = "ADSpellAlias";
        public static string DebuffInstance_Key_ADAnnouce = "ADAnnouce";
        public static string DebuffInstance_Key_ADSpellMinMana = "ADSpellMinMana";
        public static string DebuffInstance_Key_ADSpellRecast = "ADSpellRecast";
        public static string DebuffInstance_Key_ADSpellCastonResist = "ADSpellCastonResist";
        public static string DebuffInstance_Key_ADSpellDelay = "ADSpellDelay";
        public static string DebuffInstance_Key_ADTarCnt = "ADTarCnt";
        public static string DebuffInstance_Key_ADTarType = "ADTarType";
        public static string DebuffInstance_Key_ADTarBegHP = "ADTarBegHP";
        public static string DebuffInstance_Key_ADTarEndHP = "ADTarEndHP";
        public static string DebuffInstance_Key_ADIfSpellImmune = "ADIfSpellImmune";
        public static string DebuffInstance_Key_ADUseHOTT = "ADUseHoTT";
        public static string DebuffInstance_Key_ADPreCondition = "ADPreCondition";
        #endregion

        #region Event Settings Keys
        public static string EventSettings_Section_Key = "AdvEvent";
        public static string EventSettings_Key_AECount = "AECount";
        public static string EventSettings_Key_AECheckTime = "AECheckTime";
        public static string EventSettings_Key_AECustom1 = "AECustom1";
        public static string EventSettings_Key_AECustom2 = "AECustom2";
        public static string EventSettings_Key_AECustom3 = "AECustom3";
        #endregion

        #region Event Instance Keys
        public static string EventInstance_Key_AEGem = "AEGem";
        public static string EventInstance_Key_AESpell = "AESpell";
        public static string EventInstance_Key_AESpellFoci = "AESpellFoci";
        public static string EventInstance_Key_AEDurMod = "AEDurMod";
        public static string EventInstance_Key_AEDelay = "AEDelay";
        public static string EventInstance_Key_AEEventMinMana = "AEEventMinMana";
        public static string EventInstance_Key_AEEventMinHP = "AEEventMinHP";
        public static string EventInstance_Key_AEMinMana = "AEMinMana";
        public static string EventInstance_Key_AEMaxMana = "AEMaxMana";
        public static string EventInstance_Key_AEMinHP = "AEMinHP";
        public static string EventInstance_Key_AEMaxHP = "AEMaxHP";
        public static string EventInstance_Key_AETarType = "AETarType";
        public static string EventInstance_Key_AESpellAlias = "AESpellAlias";
        public static string EventInstance_Key_AEAnnounce = "AEAnnounce";
        public static string EventInstance_Key_AETarCnt = "AETarCnt";
        #endregion

        #region Pull Settings Defaults
        public static string PullSettings_Section_Key = "AdvPull";
        public static string PullSettings_Key_APCheckTime = "APCheckTime";
        public static string PullSettings_Key_APRadius = "APRadius";
        public static string PullSettings_Key_APMobMax = "APMobMax";
        public static string PullSettings_Key_APScript = "APScript";
        public static string PullSettings_Key_APPath = "APPath";
        public static string PullSettings_Key_APBefore = "APBefore";
        public static string PullSettings_Key_APAfter = "APAfter";
        public static string PullSettings_Key_APAnnounce = "APAnnounce";
        #endregion
    }

}
